<?php
declare(strict_types=1);

namespace app\apisell\command;

use app\apisell\controller\xcx\Order;
use app\apisell\controller\xcx\PopuData;
use app\apisell\service\settle\SettleService;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\facade\Db;

class syncSettleData extends Command
{
    protected function configure()
    {
        // 命令的名称及用途描述
        $this->setName('setSettleData')->setDescription('结算未结算订单');
    }
    /**
     * 执行清除未支付订单的操作
     *
     * 本函数从数据库中查询设置的未支付订单清除时间阈值，并根据该阈值删除所有未支付的订单
     * 这是为了防止未支付订单长时间占用资源，确保系统的高效运行
     *
     * @param Input $input 输入对象，用于获取命令行输入的参数
     * @param Output $output 输出对象，用于向命令行输出信息
     */ 
    protected function execute(Input $input, Output $output)
    {
        // 分销订单结算
        $sell = Db::table('xh_sell_order')
            ->where('state', 5)
            ->where('settle', 0)
            ->whereTime('settle_time', '<', date('Y-m-d H:i:s'))
            ->select()->toArray();
        
        foreach ($sell as $item) {
            $res = SettleService::settleOrder($item);
            $output->writeln('完成一次分销订单结算记录,返回信息:'. $res);
        }

        // 拼团订单结算
        $groups = Db::table('xh_sell_groups_order')
            ->where('state', 6)
            ->where('settle', 0)
            ->whereTime('settle_time', '<', date('Y-m-d H:i:s'))
            ->select()->toArray();

        foreach ($groups as $item) {
            $res = SettleService::settleOrder($item);
            $output->writeln('完成一次拼团订单结算记录,返回信息:'. $res);
        }
        
        $output->writeln('完成全部订单结算记录');
        
    }
    
    
    
    
}